Celem analizy było zrozumienie dlaczego na przestrzeni ostatnich 60 lat zmniejszała się długość śledzia oceanicznego wyławianego w Europie. Do analizy zebrano pomiary śledzi i warunków w jakich żyją z ostatnich 60 lat.
Definicje zmiennych poddanych analizie:
length: długość złowionego śledzia [cm]; cfin1: dostępność planktonu [zagęszczenie Calanus finmarchicus gat. 1]; cfin2: dostępność planktonu [zagęszczenie Calanus finmarchicus gat. 2]; chel1: dostępność planktonu [zagęszczenie Calanus helgolandicus gat. 1]; chel2: dostępność planktonu [zagęszczenie Calanus helgolandicus gat. 2]; lcop1: dostępność planktonu [zagęszczenie widłonogów gat. 1]; lcop2: dostępność planktonu [zagęszczenie widłonogów gat. 2]; fbar: natężenie połowów w regionie [ułamek pozostawionego narybku]; recr: roczny narybek [liczba śledzi]; cumf: łączne roczne natężenie połowów w regionie [ułamek pozostawionego narybku]; totaln: łączna liczba ryb złowionych w ramach połowu [liczba śledzi]; sst: temperatura przy powierzchni wody [°C]; sal: poziom zasolenia wody [Knudsen ppt]; xmonth: miesiąc połowu [numer miesiąca]; nao: oscylacja północnoatlantycka [mb]
Najważniejszymi zmiennymi wpływającymi na zmniejszanie się długości śledzia są:
fbar - zbyt mały ułamek pozostawionego narybku, co sugeruje, że odławiane są nie tylko 3 letnie śledzie ale może i młodsze, cumf - łączne natężenie połowów,
z przyczyn klimatycznych na wyróżnienie zasługują zmienne: cfin2 - spadająca dostępność planktonu, negatywnie wpływająca na jego długość, sst- wzrost temperatury wody, negatywnie wpływający na jego długość
Model jest kiepsko dopasowany - R2 na poziomie 0,34 na zbiorze uczącym. MAE wynosci 1.07
RMSE Rsquared MAE
1.3625958 0.3253109 1.0691648
Kod zapewniający powtarzalność wyników przy każdym uruchomieniu raportu na tych samych danych:
i_rows <- nrow(dane)
j_cols <- ncol(dane)
for (i in 1:(i_rows)) {
for (j in 1:(j_cols)) {
if ((dane[i,j])=="?"){
if (i<i_rows) {
nast <- (dane[i+1,j+1])
} else {
nast <- 0
}
if ((dane[i,j+1])==nast){
if (is.finite(as.numeric(dane[i+1,j])*as.numeric(dane[i,j+1])/as.numeric(dane[i+1,j+1]))){
dane[i,j]<-(as.numeric(dane[i+1,j])*as.numeric(dane[i,j+1])/as.numeric(dane[i+1,j+1]))
} else {
dane[i,j]<-0
}
} else {
if (is.finite(as.numeric(dane[i-1,j])*as.numeric(dane[i,j+1])/as.numeric(dane[i-1,j+1]))){
dane[i,j]<-(as.numeric(dane[i-1,j])*as.numeric(dane[i,j+1])/as.numeric(dane[i-1,j+1]))
} else {
dane[i,j]<-0
}
}
}
}
}## [1] 52582 16
| V1 | length | cfin1 | cfin2 | chel1 | chel2 | lcop1 | lcop2 | fbar | recr | cumf | totaln | sst | sal | xmonth | nao | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Min. : 0 | Min. :19.0 | Min. : 0.0000 | Min. : 0.0000 | Min. : 0.000 | Min. : 0.00 | Min. : 0.000 | Min. : 0.00 | Min. :0.0680 | Min. : 140515 | Min. :0.06833 | Min. : 144137 | Min. : 0.00 | Min. :35.40 | Min. : 1.000 | Min. :-4.89000 | |
| 1st Qu.:13145 | 1st Qu.:24.0 | 1st Qu.: 0.0000 | 1st Qu.: 0.2778 | 1st Qu.: 2.469 | 1st Qu.: 13.43 | 1st Qu.: 2.548 | 1st Qu.:17.81 | 1st Qu.:0.2270 | 1st Qu.: 360061 | 1st Qu.:0.14809 | 1st Qu.: 306068 | 1st Qu.:13.60 | 1st Qu.:35.51 | 1st Qu.: 5.000 | 1st Qu.:-1.89000 | |
| Median :26291 | Median :25.5 | Median : 0.1111 | Median : 0.7012 | Median : 5.750 | Median : 21.44 | Median : 7.000 | Median :24.86 | Median :0.3320 | Median : 421391 | Median :0.23191 | Median : 539558 | Median :13.86 | Median :35.51 | Median : 8.000 | Median : 0.20000 | |
| Mean :26291 | Mean :25.3 | Mean : 0.4441 | Mean : 2.0227 | Mean : 9.990 | Mean : 21.18 | Mean : 12.784 | Mean :28.39 | Mean :0.3304 | Mean : 520367 | Mean :0.22981 | Mean : 514973 | Mean :13.86 | Mean :35.51 | Mean : 7.258 | Mean :-0.09236 | |
| 3rd Qu.:39436 | 3rd Qu.:26.5 | 3rd Qu.: 0.3333 | 3rd Qu.: 1.7936 | 3rd Qu.:11.500 | 3rd Qu.: 27.19 | 3rd Qu.: 21.231 | 3rd Qu.:37.23 | 3rd Qu.:0.4560 | 3rd Qu.: 724151 | 3rd Qu.:0.29803 | 3rd Qu.: 730351 | 3rd Qu.:14.16 | 3rd Qu.:35.52 | 3rd Qu.: 9.000 | 3rd Qu.: 1.63000 | |
| Max. :52581 | Max. :32.5 | Max. :37.6667 | Max. :19.3958 | Max. :75.000 | Max. :117.45 | Max. :115.583 | Max. :68.74 | Max. :0.8490 | Max. :1565890 | Max. :0.39801 | Max. :1015595 | Max. :14.73 | Max. :35.61 | Max. :12.000 | Max. : 5.08000 |
| V1 | length | cfin1 | cfin2 | chel1 | chel2 | lcop1 | lcop2 | fbar | recr | cumf | totaln | sst | sal | xmonth | nao | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| V1 | -0.34 | -0.15 | 0.06 | -0.16 | 0.06 | -0.23 | 0.04 | 0.09 | 0 | 0.23 | -0.36 | 0.26 | -0.06 | 0 | 0.41 | |
| length | 0.08 | 0.1 | 0.22 | -0.02 | 0.24 | 0.05 | 0.25 | -0.01 | 0.01 | 0.1 | -0.33 | 0.03 | 0.01 | -0.26 | ||
| cfin1 | 0.15 | 0.09 | 0.2 | 0.12 | 0.21 | -0.07 | 0.12 | -0.05 | 0.13 | 0.01 | 0.13 | 0.01 | 0.01 | |||
| cfin2 | 0 | 0.3 | -0.04 | 0.65 | 0.15 | -0.1 | 0.34 | -0.22 | -0.17 | -0.08 | 0.01 | -0.01 | ||||
| chel1 | 0.28 | 0.95 | 0.25 | 0.16 | -0.05 | 0.07 | 0.17 | -0.15 | -0.15 | 0.05 | -0.51 | |||||
| chel2 | 0.17 | 0.88 | 0.03 | 0 | 0.26 | -0.37 | 0.01 | -0.22 | 0.07 | -0.06 | ||||||
| lcop1 | 0.15 | 0.1 | 0 | -0.01 | 0.27 | -0.19 | -0.1 | 0.03 | -0.55 | |||||||
| lcop2 | 0.05 | 0 | 0.29 | -0.3 | -0.08 | -0.18 | 0.06 | -0.04 | ||||||||
| fbar | -0.24 | 0.82 | -0.51 | -0.13 | 0.04 | 0.01 | 0.07 | |||||||||
| recr | -0.26 | 0.37 | -0.14 | 0.28 | 0.02 | 0.09 | ||||||||||
| cumf | -0.71 | 0.02 | -0.1 | 0.03 | 0.23 | |||||||||||
| totaln | -0.21 | 0.15 | -0.03 | -0.39 | ||||||||||||
| sst | 0 | 0 | 0.37 | |||||||||||||
| sal | -0.02 | 0.13 | ||||||||||||||
| xmonth | 0 | |||||||||||||||
| nao |
Dane nie są ułożone idealnie chrolonogicznie (liczba zmian miesięcy sugerująca na zmianę roku wynosi ponad 1800), dlatego podzielono je na równe obszary (lata) po 877 obserwacji
#wyodrębnienie zbioru uczącego
inTraining <- createDataPartition(y = dane$length,p = .75,list = FALSE)
training <- dane[ inTraining,]
#podział pozostałych danych na zbiór na walidujący i testujący
inTesting <- createDataPartition(y = dane[-inTraining,]$length, p = .5, list = FALSE)
#testowy zbiór danych
testing <- dane[-inTraining,][inTesting,]
#zbiór walidacyjny
validating <- dane[-inTraining,][-inTesting,]model <- lm( length ~ cfin1 + cfin2 + chel1 + lcop1 + lcop2 + fbar + recr + cumf + totaln + sst + sal + factor(xmonth) + year,data = training)
summary(model)##
## Call:
## lm(formula = length ~ cfin1 + cfin2 + chel1 + lcop1 + lcop2 +
## fbar + recr + cumf + totaln + sst + sal + factor(xmonth) +
## year, data = training)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.1110 -0.8453 0.0057 0.8798 7.5057
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.977e+01 7.222e+00 13.814 < 2e-16 ***
## cfin1 5.097e-02 7.742e-03 6.583 4.66e-11 ***
## cfin2 6.729e-02 2.748e-03 24.488 < 2e-16 ***
## chel1 -1.369e-02 1.868e-03 -7.329 2.36e-13 ***
## lcop1 2.357e-02 1.721e-03 13.692 < 2e-16 ***
## lcop2 5.057e-03 8.404e-04 6.018 1.78e-09 ***
## fbar 7.435e+00 8.793e-02 84.557 < 2e-16 ***
## recr 2.305e-07 3.003e-08 7.675 1.69e-14 ***
## cumf -1.135e+01 1.737e-01 -65.342 < 2e-16 ***
## totaln -7.532e-07 5.493e-08 -13.712 < 2e-16 ***
## sst -2.965e-01 1.248e-02 -23.761 < 2e-16 ***
## sal -1.962e+00 2.038e-01 -9.628 < 2e-16 ***
## factor(xmonth)2 -5.208e-01 4.999e-02 -10.418 < 2e-16 ***
## factor(xmonth)3 -1.384e-01 5.024e-02 -2.756 0.00586 **
## factor(xmonth)4 -1.219e-01 4.995e-02 -2.441 0.01465 *
## factor(xmonth)5 6.437e-02 4.761e-02 1.352 0.17635
## factor(xmonth)6 3.050e-01 4.667e-02 6.535 6.43e-11 ***
## factor(xmonth)7 2.395e-01 4.421e-02 5.418 6.06e-08 ***
## factor(xmonth)8 1.257e-01 4.302e-02 2.923 0.00347 **
## factor(xmonth)9 9.114e-02 4.507e-02 2.022 0.04316 *
## factor(xmonth)10 -6.645e-02 4.359e-02 -1.524 0.12744
## factor(xmonth)11 -8.688e-02 5.054e-02 -1.719 0.08560 .
## factor(xmonth)12 -2.707e-01 5.279e-02 -5.128 2.94e-07 ***
## year -2.483e-02 4.502e-04 -55.153 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.336 on 39414 degrees of freedom
## Multiple R-squared: 0.3457, Adjusted R-squared: 0.3453
## F-statistic: 905.2 on 23 and 39414 DF, p-value: < 2.2e-16
## RMSE Rsquared MAE
## 1.3625958 0.3253109 1.0691648